﻿using System;
using System.Linq;
using System.Web.Mvc;
using Unijovem.Domain;
using Unijovem.UI.Models;
using System.Data;

namespace Unijovem.UI.Controllers
{
    public class EnqueteController : ControllerBase<EnqueteModel, Enquete>
    {
        public ActionResult Responder(int id)
        {
            return ObterViewPadrao(id);
        }

        public ActionResult Visualizar(int id)
        {
            var model = new EnqueteModel().CriarViewModel(new Enquete().SelectById<Enquete>(id));
            return View(model);
        }

        public ActionResult Semana()
        {
            var model = new EnqueteModel().CriarViewModel(new Enquete().SelecionarEnqueteSemana());

            return PartialView(model);
        }

        private ActionResult ObterViewPadrao(int id)
        {
            var model = new EnqueteModel().CriarViewModel(new Enquete().SelectById<Enquete>(id));

            model.UsuarioEstaLogado = PessoaLogada != null;

            if (PessoaLogada != null)
                model.PessoaLogadaJaRespondeu = model.EnqueteRespostas.Any(m => m.IdPessoa == PessoaLogada.Id);

            return PartialView(model);
        }

        [HttpPost]
        public ActionResult Responder(EnqueteModel model, FormCollection collection)
        {
            try
            {
                var dominio = new EnqueteResposta {Data = DateTime.Now, IdEnquete = model.Id, IdPessoa = PessoaLogada.Id};

                var enquete = collection.GetValue("Enquete").AttemptedValue;
                dominio.Resposta = enquete;
                dominio.Save();
            }
            catch (UpdateException)
            {
                return ObterViewPadrao(model.Id);
            }

            return ObterViewPadrao(model.Id);
        }

    }
}
